A computer program can be viewed as a detailed plan or procedure for solving a problem with a computer: an ordered sequence of computational instructions necessary to achieve such a solution. The distinction between computer programs and equipment is often made by referring to the former as software and the latter as hardware. An operating system is a set of programs that controls the interaction between applications and hardware. The operating system also controls the interaction between different applications. The operating system also provides generalized system services to application programs, such as utility and daemon programs. These system services conventionally include access to hardware peripheral devices attached directly or indirectly to the computer system. For example, an operating system provides access to system hardware (e.g., by device drivers), and access to the file system on the hardware (e.g., by file system utilities.)
During development of an embedded application, it is often advantageous to use a target and a host computing environment. The target is the device for which the application is being developed; and the host is used to develop the application for the target. The host may be used as a console for compiling new code and for monitoring debug output.
NFS (Network File System) is an example of a software package that allows a program running on the host system to access files located on the target device (and vice-versa), thus enabling an executable application that is located on the host system to run on the target device. To implement this, NFS mounts a directory on the target to a remote directory on the host. NFS supports mounting a directory on a UNIX based target to a remote directory on a Windows based host.
Programming objects are often used when writing a computer program. Programming objects simplify the logical thought process of writing a computer program.
A compiler is used to translate the computer program into machine code. It may be a task of considerable difficulty to write compilers for a given computer language, especially when the computer program is designed to operate on different types of hardware and operating systems. Compilers read the computer language, known as source code, from one or more source files. The source code is then translated into object code, which is the machine code representation of the source files. The object code is linked with other object code, e.g., libraries, to form an executable program.
A computer program may also be compiled not into machine language, but into an intermediate language that is close enough to machine language and efficient to interpret. However, the intermediate language is not so close that it is tied to the machine language of a particular computer. It is use of this approach that provides the Java language with its computer-platform independence.
Errors arise when a computer program is written, and consequently should be removed if the program is to operate correctly and efficiently. The process of removing the errors is known as “debugging”. Since modern computer programs can encompass many lines of source code and can be arduous to understand, a program known as a debugger, or a debugging program, is used to simplify the task.